package com.platform.core.service;

import com.platform.comm.service.CommonBiz;
import com.platform.core.entity.NcloudSysNameStandardEntity;
import com.platform.dto.NcloudSysNameStandardDto;
import com.querydsl.core.types.Predicate;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * Description: NcloudSysNameStandard 业务层接口
 *
 * @author Coder
 */
public interface NcloudSysNameStandardService extends CommonBiz<NcloudSysNameStandardEntity,String> {

    /**
     * 分页查询命名规范
     *
     * @param predicate   查询参数
     * @param pageable    分页参数
     * @return 命名规范列表
     */
    Page<NcloudSysNameStandardDto> search(Predicate predicate, Pageable pageable);

    /**
     * 根据ID查询命名规范
     *
     * @param id 命名规范ID
     * @return 命名规范
     */
    NcloudSysNameStandardDto detail(String id);

    /**
     * 新增命名规范
     *
     * @param openServiceIpBlackDto 新增信息
     * @return
     */
    NcloudSysNameStandardDto add(NcloudSysNameStandardDto openServiceIpBlackDto);

    /**
     * 修改命名规范
     *
     * @param openServiceIpBlackDto 修改内容
     */
    NcloudSysNameStandardDto update(NcloudSysNameStandardDto openServiceIpBlackDto);

    /**
     * 删除命名规范
     *
     * @param id 命名规范ID
     */
    void remove(String id);

    /**
     * 分页查询
     *
     * @param openServiceIpBlackDto 请求参数
     * @param pageable        分页参数
     * @return 分页
     */
    Page<NcloudSysNameStandardDto> searchByExampleForPage(NcloudSysNameStandardDto openServiceIpBlackDto, Pageable pageable);

    /**
     * 列表查询
     *
     * @param openServiceIpBlackDto 请求参数
     * @return 列表
     */
    List<NcloudSysNameStandardDto> searchByExampleForList(NcloudSysNameStandardDto openServiceIpBlackDto);

    /**
     * 进行校验名称不能重复
     *
     * @return true:允许添加 false:不允许添加
     */
    boolean checkByName(NcloudSysNameStandardDto ncloudSysNameStandardDto);
}
